
package edu.uoc.tdp.beans.proves;

import edu.uoc.tdp.beans.conexio.ResponsableEvents;
import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author Grup 1X4J
 */
//TODO NOTES XMARTI
/*
 * En principi la donc per definitiva. 
 * Tot i que es possible que afegeixi algun altre constructor, de cares  a la 
 * Implementació de l'auditoria. 
 */
public class Prova implements Serializable {
    private Integer idProva;
    private String descripcio;
    private Date dataIniInscripcio;
    private Date dataFiInscripcio;
    private Integer nombrePlaces;
    private Integer nombreInscrits;
    private EstatProva estat;
    private Date dataCreacio;
    private ResponsableEvents usuariCreacio;
    private Date dataModificacio;
    private ResponsableEvents usuariModificacio;
    private Date dataEsborrat;
    private ResponsableEvents usuariEsborrat;
    private RondaEliminatoria rondaEliminatoria;
    private RondaFinal rondaFinal;
    private static final long serialVersionUID = 1L;
    public Prova(){
        rondaEliminatoria=new RondaEliminatoria();
        rondaFinal=new RondaFinal();
    }
    public Prova(Integer pIdProva, String pDescripcio){
       this();
       this.idProva=pIdProva;
       this.descripcio=pDescripcio; 
    }
    
    /**
     * Constructor de Prova amb 5 paràmetres
     * @param pIdProva              Identificador de la prova
     * @param pDescripcio           Text Descriptiu de la prova
     * @param pDataIniInscripcio    Data inici de les inscripcions
     * @param pDataFiInscripcio     Data fi de les Inscripcions
     * @param pNombrePlaces         Total d'inscripcions que hi pot haver-hi en una prova
     */
    public Prova(Integer pIdProva, String pDescripcio, Date pDataIniInscripcio, Date pDataFiInscripcio, Integer pNombrePlaces ){
       this(pIdProva,pDescripcio);       
       this.dataIniInscripcio=pDataIniInscripcio;
       this.dataFiInscripcio=pDataFiInscripcio;
       this.nombrePlaces=pNombrePlaces;       
    }
    /**
     * Constructor de Prova amb 6 paràmetres
     * @param pIdProva
     * @param pDescripcio
     * @param pDataIniInscripcio
     * @param pDataFiInscripcio
     * @param pNombrePlaces
     * @param pEstat            Estat en el que es troba la prova
     */
     public Prova(Integer pIdProva, String pDescripcio, Date pDataIniInscripcio, Date pDataFiInscripcio, Integer pNombrePlaces, EstatProva pEstat ){        
        this(pIdProva,pDescripcio,pDataIniInscripcio,pDataFiInscripcio,pNombrePlaces);         
        this.estat=pEstat;
     }
     /**
      * Accessor de lectura, data creacio de la prova.
      * @return dataCreació.
      */
     public Date getDataCreacio() {
        return dataCreacio;
     }
     /**
      * Accessor d'escriptura, data creacio de la prova.
      * @param dataCreacio      data de creació.
      */
     public void setDataCreacio(Date dataCreacio) {
        this.dataCreacio = dataCreacio;
     }
     /**
      * Accessor de lectura, data de cancel·lació de la prova.
      * @return dataEsborrat
      */
    public Date getDataEsborrat() {
        return dataEsborrat;
    }
    /**
     * Accessor d'escriptura de la data de cancel·lació de la prova.
     * @param dataEsborrat 
     */
    public void setDataEsborrat(Date dataEsborrat) {
        this.dataEsborrat = dataEsborrat;
    }
    /**
     * Accessor de lectura, data de fi d'inscripció de la prova
     * @return DataFiInscricpcio
     */
    public Date getDataFiInscripcio() {
        return dataFiInscripcio;
    }
     /**
     * Accessor d'escriptura de la data Fi d'inscripcio de la prova.
     * @param dataFiInscripcio. 
     */
    public void setDataFiInscripcio(Date dataFiInscripcio) {
        this.dataFiInscripcio = dataFiInscripcio;
    }
    /**
     * Accessor de lectura, data d'inici d'inscripció de la prova
     * @return DataIniInscricpcio
     */
    public Date getDataIniInscripcio() {
        return dataIniInscripcio;
    }
    /**
     * Accessor d'escriptura de la data inici d'inscripcio de la prova.
     * @param dataIniInscripcio. 
     */
    public void setDataIniInscripcio(Date dataIniInscripcio) {
        this.dataIniInscripcio = dataIniInscripcio;
    }
    /**
     * Accessor de lectura, data de modificacio de la prova
     * @return DataModificacio
     */
    public Date getDataModificacio() {
        return dataModificacio;
    }
    /**
     * Accessor d'escriptura de la data de modificacio de la prova.
     * @param dataModificacio. 
     */
    public void setDataModificacio(Date dataModificacio) {
        this.dataModificacio = dataModificacio;
    }
    /**
     * Accessor de lectura, descricpio de la prova.
     * @return Descripcio 
     */
    public String getDescripcio() {
        return descripcio;
    }
     /**
     * Accessor d'ecriptura, Descripcio  de la prova
     * @param desricpicio
     */
    public void setDescripcio(String descripcio) {
        this.descripcio = descripcio;
    }
    /**
     * Accessor de lectura, Estat de la prova
     * @return estat
     */
    public String getEstat(){
        return estat.getEstat();
    }
    /**
     * Accessor d'ecriptura, estat de la prova
     * @param estat
     */
    public void setEstat(EstatProva estat) {
        this.estat = estat;
    }
    /**
     * Accessor de lectura, indentificador de la prova.
     * @return idProva 
     */
    public Integer getIdProva() {
        return idProva;
    }
    /**
     * Accessor d'ecriptura, identificador de la prova
     * @param idProva
     */
    public void setIdProva(Integer idProva) {
        this.idProva = idProva;
    }
    /**
     * Accessor de lectura, Nombre inscrits  de la prova.
     * @return nombreInscrits
     */
    public Integer getNombreInscrits() {
        return nombreInscrits;
    }
    /**
     * Accessor d'ecriptura, nombre Inscrits de la prova
     * @param nombreInscrits
     */
    public void setNombreInscrits(Integer nombreInscrits) {
        this.nombreInscrits = nombreInscrits;
    }
    /**
     * Accessor de lectura, Nombre places de la prova.
     * @return nombrePlaces
     */
    public Integer getNombrePlaces() {
        return nombrePlaces;
    }
    /**
     * Accessor d'ecriptura, nombre places de la prova
     * @param nombrePlaces
     */
    public void setNombrePlaces(Integer nombrePlaces) {
        this.nombrePlaces = nombrePlaces;
    }
    /**
     * Accessor de lectura, usuari creador de la prova.
     * @return usuariCreador 
     */
    public ResponsableEvents getUsuariCreacio() {
        return usuariCreacio;
    }
    /**
     * Accessor d'ecriptura, usuari creador de la prova
     * @param usuariCreacio        Usuari creador de la prova
     */
    public void setUsuariCreacio(ResponsableEvents usuariCreacio) {
        this.usuariCreacio = usuariCreacio;
    }
    /**
     * Accessor de lectura, usuari esborrador de la prova.
     * @return usuariEsborrat 
     */
    public ResponsableEvents getUsuariEsborrat() {
        return usuariEsborrat;
    }
    /**
     * Accessor d'ecriptura, usuari esborrador de la prova
     * @param usuariEsborrat        Usuari esborrador de la prova
     */
    public void setUsuariEsborrat(ResponsableEvents usuariEsborrat) {
        this.usuariEsborrat = usuariEsborrat;
    }
    /**
     * Accessor de lectura, usuari modificador de la prova.
     * @return usuariModificacio 
     */
    public ResponsableEvents getUsuariModificacio() {
        return usuariModificacio;
    }
    /**
     * Accessor d'ecriptura, usuari modificador de la prova
     * @param usuariModificacio        Usuari modificador de la prova
     */
    public void setUsuariModificacio(ResponsableEvents usuariModificacio) {
        this.usuariModificacio = usuariModificacio;
    }
    /**
     * Accessor de lectura, Ronda eliminatoria de la prova.
     * @return rondaEliminatoria
     */
    public RondaEliminatoria getRondaEliminatoria() {
        return rondaEliminatoria;
    }
    /**
     * Accessor d'ecriptura, ronda eliminatoria de la prova
     * @param rondaEliminatoria        Ronda eliminatoria de la prova
     */
    public void setRondaEliminatoria(RondaEliminatoria rondaEliminatoria) {
        this.rondaEliminatoria = rondaEliminatoria;
    }
    /**
     * Accessor de lectura, Ronda Final de la prova.
     * @return rondaEliminatoria
     */
    public RondaFinal getRondaFinal() {
        return rondaFinal;
    }
    /**
     * Accessor d'ecriptura, ronda final de la prova
     * @param rondaFinal        Ronda final de la prova
     */
    public void setRondaFinal(RondaFinal rondaFinal) {
        this.rondaFinal = rondaFinal;
    }

    @Override
    public String toString() {
        return this.getDescripcio();
    }
    
    
}
